//
//  RxAlamofireDownloadViewController.swift
//  iOS-RxSwift-Tutorials_Example
//
//  Created by mengru.tian on 2020/9/22.
//  Copyright © 2020 CocoaPods. All rights reserved.
//

import UIKit
import RxSwift
import RxAlamofire
import Alamofire

class RxAlamofireDownloadViewController: UIViewController {
    
    @IBOutlet weak var progressView: UIProgressView!
    let disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()

        title = "44.结合RxAlamofire使用4：文件下载"
        view.backgroundColor = .white
        
        test4()
    }
    
    func test() {
        //指定下载路径（文件名不变）
//        let destination: DownloadRequest.DownloadFileDestination = { _, response in
//            let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
//            let fileURL = documentsURL.appendingPathComponent(response.suggestedFilename!)
//            //两个参数表示如果有同名文件则会覆盖，如果路径中文件夹不存在则会自动创建
//            return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
//        }
//         
//        //需要下载的文件
//        let fileURL = URL(string: "http://www.hangge.com/blog/images/logo.png")!
//         
//        //开始下载
//        download(URLRequest(url: fileURL), to: destination)
//            .subscribe(onNext: { element in
//                print("开始下载。")
//            }, onError: { error in
//                print("下载失败! 失败原因：\(error)")
//            }, onCompleted: {
//                print("下载完毕!")
//            })
//            .disposed(by: disposeBag)
    }
    
    // 将 logo 图片下载下来，并保存到用户文档目录下的 file1 子目录（ Documnets/file1 目录），文件名改成 myLogo.png
    func test2() {
        //指定下载路径和保存文件名
//        let destination: DownloadRequest.DownloadFileDestination = { _, _ in
//            let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
//            let fileURL = documentsURL.appendingPathComponent("file1/myLogo.png")
//            //两个参数表示如果有同名文件则会覆盖，如果路径中文件夹不存在则会自动创建
//            return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
//        }
//
//        //需要下载的文件
//        let fileURL = URL(string: "http://www.hangge.com/blog/images/logo.png")!
//
//        //开始下载
//        download(URLRequest(url: fileURL), to: destination)
//            .subscribe(onNext: { element in
//                print("开始下载。")
//            }, onError: { error in
//                print("下载失败! 失败原因：\(error)")
//            }, onCompleted: {
//                print("下载完毕!")
//            })
//            .disposed(by: disposeBag)
    }
    
    //开始下载
    func test3() {
        //指定下载路径和保存文件名
//        let destination: DownloadRequest.DownloadFileDestination = { _, _ in
//            let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
//            let fileURL = documentsURL.appendingPathComponent("file1/myLogo.png")
//            //两个参数表示如果有同名文件则会覆盖，如果路径中文件夹不存在则会自动创建
//            return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
//        }
//
//        //需要下载的文件
//        let fileURL = URL(string: "http://www.hangge.com/blog/images/logo.png")!
//
//        //开始下载
//        download(URLRequest(url: fileURL), to: destination)
//            .subscribe(onNext: { element in
//                print("开始下载。")
//                element.downloadProgress(closure: { progress in
//                    print("当前进度: \(progress.fractionCompleted)")
//                    print("  已下载：\(progress.completedUnitCount/1024)KB")
//                    print("  总大小：\(progress.totalUnitCount/1024)KB")
//                })
//            }, onError: { error in
//                print("下载失败! 失败原因：\(error)")
//            }, onCompleted: {
//                print("下载完毕!")
//            }).disposed(by: disposeBag)
    }
    
    // 下载更新UI
    func test4() {
        //指定下载路径和保存文件名
//        let destination: DownloadRequest.DownloadFileDestination = { _, _ in
//            let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
//            let fileURL = documentsURL.appendingPathComponent("file1/myLogo.png")
//            //两个参数表示如果有同名文件则会覆盖，如果路径中文件夹不存在则会自动创建
//            return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
//        }
//
//        //需要下载的文件
//        let fileURL = URL(string: "http://www.hangge.com/blog/images/logo.png")!
//        //开始下载
//        download(URLRequest(url: fileURL), to: destination)
//            .map{request in
//                //返回一个关于进度的可观察序列
//                Observable<Float>.create{observer in
//                    request.downloadProgress(closure: { (progress) in
//                        observer.onNext(Float(progress.fractionCompleted))
//                        if progress.isFinished{
//                            observer.onCompleted()
//                        }
//                    })
//                    return Disposables.create()
//                }
//            }
//            .flatMap{$0}
//            .bind(to: progressView.rx.progress) //将进度绑定UIProgressView上
//            .disposed(by: disposeBag)
    }

}
